#include "account.h"

Account::Account(Username* us, Profilo* pr): User(us,pr){}

bool Account::insertContatto(Contatto* con){
    if(collegamenti.count()<5){
        collegamenti.push_back(con);
        return true;
    }
    else return false;
}

bool Account::eraseContatto(User* con){
    for(QVector<Contatto*>::iterator it= collegamenti.begin(); it!= collegamenti.end(); it++){
        if((*it)->getNick()==con->getNick()){
            collegamenti.erase(it);
            return true;
        }
    }
    return false;
}

void Account::updateCon(Contatto* change){  //cambio il contatto
    for(QVector<Contatto*>::iterator it=collegamenti.begin(); it!=collegamenti.end(); it++){
        if((*it)->getNick()==change->getNick()){
            Tag* tag= (*it)->getTagNQS();
            collegamenti.erase(it);
            change->setTag(tag);
            collegamenti.append(change);
        }
    }
}

bool Account::insertGruppo(Gruppo* g){
    gruppi.push_back(g);
    return true;
}

bool Account::eraseGruppo(Gruppo* g){
    for(QVector<Gruppo*>::iterator it= gruppi.begin(); it!=gruppi.end(); it++){
        if((*it)==g){
            gruppi.erase(it);
            return true;
        }
    }
    return false;
}

bool Account::found(User *cont, QString& tag){//chiamato dallo showprofile di un user non current: se e' gia' nei contatti, in tag
                                              //metto il tag (per la label di riconoscimento utente) e ritorno true!
    for(QVector<Contatto*>::iterator it= collegamenti.begin(); it!=collegamenti.end(); it++){
        if((*it)->getNick()==cont->getNick()){
            tag= (*it)->getTag();
            return true;
        }
    }
    return false;
}

bool Account::iscritto(Gruppo* g){  //per sapere se current e' iscritto al gruppo g (return true).
    for(QVector<Gruppo*>::iterator it= gruppi.begin(); it!= gruppi.end(); it++)
        if(g==(*it))
            return true;
    return false;
}

void Account::gestionegruppo(QPushButton *pb){
    pb->setEnabled(false);
}

void Account::gestEraseG(QPushButton *pb){
    pb->setEnabled(false);
}

void Account::gestQPBprinc(QPushButton* upgrade){
    upgrade->setEnabled(true);
}

void Account::gestQPBchoice(QPushButton* bus, QPushButton* exe){
    bus->setEnabled(true);
    exe->setEnabled(true);
}

int Account::limitsu(){
    return 10;
}

int Account::limitsg(){
    return 20;
}

int Account::getMax(){
    return 5;
}
